package sanrenxing.ForePaper.dao;

import sanrenxing.ForePaper.domain.ExamScore;
import sanrenxing.ForePaper.domain.PaperStateMsg;
import sanrenxing.ForePaper.domain.ExamSubject;

import java.util.Map;

public interface ForePaperDao {

    /**
     * 检索学员是否有考试状态
     * @param stuId
     * @return
     */
    public boolean checkState(String stuId);

    /**
     * 展示试卷状态
     * @param stuId
     * @return
     */
    public PaperStateMsg showState(String stuId);

    /**
     * 查询学员考试状态的试卷的题目编号
     * @param stuId
     * @return
     */
    public Map<String,Object> subjectNum(String stuId);

    /**
     * 通过题目编号取出题目
     * @param subjectId
     * @return
     */
    public ExamSubject getSubject(String subjectId);

    /**
     * 生成随机数方法
     * @param length
     * @return
     */
    public int[] makeRandom(int length);

    /**
     * 修改学员考试状态
     *
     */
    public void updateState(int conditionId);

    /**
     * 删除学员考试状态
     * @param conditionId
     */
    public void deleteState(int conditionId);

    /**
     * 查询成绩，为阅卷后添加成绩做查询
     * @return
     */
    public ExamScore findScore(int conditionId,int score);

    /**
     * 自动阅卷后添加考试成绩
     *
     */
    public void addExamScore(ExamScore examScore);

    /**
     * 查询补考信息，为阅卷后添加补考信息做查询
     * @param conditionId
     * @return
     */
    public Map<String,Object> findReexams(int conditionId);

    /**
     * 阅卷后添加补考信息
     * @param stuId
     * @param courseId
     */
    public void addReexams(String stuId,int courseId);

    /**
     * 初始化难易程度数据
     * @param conditionId
     */
    public boolean initializeAnalysis(int conditionId);

    /**
     * 初始化难易程度数据，该方法有上面方法调用
     * @param paperId
     * @param classId
     */
    public void initializeData(int paperId,int classId,String subjectId);

    /**
     * 查询班级人数的方法
     * @param conditionId
     * @return
     */
    public int findStuNum(int conditionId);

    /**
     * 更新试题难易表
     * @param conditionId
     * @param correctId
     */
    public void updateAnalysis(int conditionId,String correctId,int stuNum);

}
